Object oriented programming languages are well known. The most popular object oriented language is C++; however, the JAVA programming language is rapidly gaining acceptance. JAVA is an interpreted language that is especially adapted for open network environments where the client/server architecture is widely used. One major advantage of JAVA is its capability to be compiled once and then executed on computers having different hardware and software configurations. That is, a JAVA application program does not require information regarding the configuration of the machine on which it will run for its compilation and execution.
Most application programs operate on data. Frequently this data is stored in a database that is separate from the application space where the application program is executing. The management of data within the database and the retrieval and storage of data in response to queries and write commands from application programs are typically performed by a database management system. Prior to the advent of object orienting programming, relational databases and relational database management systems were the most frequently used storage repositories for application programs. As object oriented programming became more prevalent, interfaces were developed that converted objects received from object oriented implemented applications into data structures that could be stored within a relational database system. However, a number of inefficiencies are encountered with the use of relational databases to store objects. One limitation of relational databases that results in the inefficient storage of objects is the primary data organization form used by relational databases, namely, data tables. Objects are efficiently stored in relational databases because they typically have a one to many relationship that is best represented by a binary tree structure. Binary tree structures are implemented by one or more join operations across tables in a relational database and these operations require overhead processing by the relational database management system. To overcome these limitations, object repositories for the storage of objects and object repository management systems were developed. These object repositories and management systems do not depend upon join operations across data tables for storage of objects. Object repositories permit objects processed by object oriented implemented programs to be created, removed, retrieved or updated with programming statements placed within the object oriented application program.
No standards exist for object repositories. That is, each object repository management system has its own command syntax and commands that are supported by the object repository management system. Thus, application programs incorporate commands to the object repository management system that comply with these syntactical restraints and utilize the commands supported by the management system. If a different object repository is used or the application program is transported to a computer using a different object repository, the repository command lines in the program that interact with the database must be revised and the program recompiled. Consequently, changing the database system or transporting the compiled program to a computer using a different database system directly impacts the usefulness of the program. For JAVA applications, this effect negates a major advantage, namely, the ability to compile an application once and use it on different computers regardless of platform configuration.
Known object repositories not only are controlled by proprietary interfaces as described above, but they also include complex data structures that are typically proprietary as well. Additionally, known object repositories are rather expensive. If a software developer develops a computer application that is designed to store objects in an object repository, then a potential purchaser of the application must either already have a computer system that uses the object repository or the customer must purchase and install the object repository with which the computer application interfaces. This additional investment may reduce the market for the computer application and sales of the application program may suffer as a result.
What is needed is an efficient implementation of an object repository that can be provided with object oriented computer applications without adversely impacting the scope of the environment in which the application may be used.